Manager.getTranslator   A
last analyzed

Complexity

Conditions 2

Size

Total Lines 11
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 10
dl 0
loc 11
ccs 6
cts 6
cp 1
rs 9.9
c 0
b 0
f 0
cc 2
crap 2
1
import Loader from './Loader';
2
import Translator from './Translator';
3
import TranslatorFactory from './Translator/Factory';
4
5
interface Translators {
6
  [languageCode: string]: Translator;
7
}
8
9
export default class Manager {
10
  protected loader: Loader;
11
  protected translators: Translators;
12
  protected translatorFactory: TranslatorFactory;
13
14
  constructor(loader: Loader, translatorFactory: TranslatorFactory) {
15 4
    this.loader = loader;
16 4
    this.translatorFactory = translatorFactory;
17 4
    this.translators = {};
18
  }
19
20
  async getTranslator(languageCode: string): Promise<Translator> {
21 3
    if (this.translators.hasOwnProperty(languageCode)) {
22 1
      return this.translators[languageCode];
23
    }
24
25 2
    const languageData = await this.loader.loadLanguage(languageCode);
26 2
    const translator: Translator = this.translatorFactory.createTranslator(languageData);
27 2
    this.translators[languageCode] = translator;
28
29 2
    return translator;
30
  }
31
}
32